package 设计模式.memento.clone;

/**
 * Clone 方式的备忘录模式
 *     原形模式深拷贝和浅拷贝的问题，在复杂的场景下会让程序逻辑异常混乱，出现错误也很难跟踪。因此 Clone 方式的备忘录模式适用于较简单的场景。
 *
 *  注意：
 *      - 不要与其他的对象产生严重的耦合关系
 */
public class Clinet {
    public static void main(String[] args) {
        Originator originator = new Originator();
        originator.setState("初始状态");

        System.out.println("============ 现在的状态 ==========");
        System.out.println(originator.getState());

        // 建立备份
        originator.createMemento();

        originator.setState("这是修改后的状态");
        System.out.println("============ 修改后的状态 ==========");
        System.out.println(originator.getState());

        // 恢复原状
        originator.restoreMemento();
        System.out.println("============ 恢复后的的状态 ==========");
        System.out.println(originator.getState());
    }
}
